﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using CondominioG1.Persistencia.NHibernate;
using CondominioG1.Dominio;

namespace CondominioG1.Negocio
{
    public class UsuarioService
    {
        // No hay dependencias, utilizamos las DAO ya definidas en forma directa

        // Mapeo de funcionalidades
        public Usuario RegistrarUsuario(String Codigo
                                    , String Nombres
                                    , String Apellidos
                                    , String Clave
                                    , String Tipo
                                    )
        {
            // Validación de NOMBRES
            if (null == Nombres || String.Empty.Equals(Nombres))
                throw new Exception("El dato NOMBRE es obligatorio");
            // Validación de APELLIDOS
            if (null == Apellidos || String.Empty.Equals(Apellidos))
                throw new Exception("El dato APELLIDOS es obligatorio");
            // Validación de CLAVE
            if (null == Clave || String.Empty.Equals(Clave))
                throw new Exception("El dato CORREO es obligatorio");
            // Validación de TIPO
            if (null == Tipo || String.Empty.Equals(Tipo))
                throw new Exception("El dato TIPO es obligatorio");

            // Generar nueva secuencia para Usuario
            UsuarioDAO UsuarioDAO = new UsuarioDAO();

            Usuario Usuario = new Usuario();
            Usuario.Codigo = Codigo;
            Usuario.Nombres = Nombres;
            Usuario.Apellidos = Apellidos;
            Usuario.Clave = Clave;
            Usuario.Tipo = Tipo;

            Usuario UsuarioCreado = UsuarioDAO.Crear(Usuario);
            return UsuarioCreado;
        }

        public Usuario ModificarUsuario(String Codigo
                                       , String Nombres
                                       , String Apellidos
                                       , String Clave
                                       , String Tipo
                                       )
        {
            // Validacion de existencia de Usuario
            UsuarioDAO UsuarioDAO = new UsuarioDAO();
            Usuario UsuarioExistente = UsuarioDAO.Obtener(Codigo);
            if (null == UsuarioExistente)
                throw new Exception("El Usuario NO EXISTE...");

            // Validación de NOMBRES
            if (null == Nombres || String.Empty.Equals(Nombres))
                throw new Exception("El dato NOMBRE es obligatorio");
            // Validación de APELLIDOS
            if (null == Apellidos || String.Empty.Equals(Apellidos))
                throw new Exception("El dato APELLIDOS es obligatorio");
            // Validación de CLAVE
            if (null == Clave || String.Empty.Equals(Clave))
                throw new Exception("El dato CORREO es obligatorio");
            // Validación de TIPO
            if (null == Tipo || String.Empty.Equals(Tipo))
                throw new Exception("El dato TIPO es obligatorio");

            Usuario Usuario = new Usuario();
            Usuario = UsuarioExistente;
            Usuario.Nombres = Nombres;
            Usuario.Apellidos = Apellidos;
            Usuario.Clave = Clave;
            Usuario.Tipo = Tipo;

            Usuario UsuarioModificado = UsuarioDAO.Modificar(Usuario);
            return UsuarioModificado;
        }

        public Usuario EliminarUsuario(String Codigo)
        {
            // Validacion de existencia de Usuario
            UsuarioDAO UsuarioDAO = new UsuarioDAO();
            Usuario UsuarioExistente = UsuarioDAO.Obtener(Codigo);
            if (null == UsuarioExistente)
                throw new Exception("El Usuario NO EXISTE...");

            Usuario Usuario = new Usuario();
            Usuario = UsuarioExistente;

            UsuarioDAO.Eliminar(Usuario);
            return Usuario;
        }
    }
}

